package org.xx.armory.spring5.mvc;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 允许输出缓存。
 * <p>此注解实际上并不缓存任何内容，仅仅通过在返回的响应中加入缓存相关的头部信息，来允许中间代理服务器或者浏览器进行缓存。</p>
 *
 * @see <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control">Cache-Control</a>
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface OutputCache {
    /**
     * 缓存的保存位置。
     *
     * @return 获取缓存的保存位置。
     */
    CacheControlDirective directive() default CacheControlDirective.PRIVATE;

    /**
     * 缓存时间（秒）。
     *
     * @return 获取缓存时间。
     */
    int maxAge() default 60;
}
